package com.example.xiaomi.Model.Dao;
import com.example.xiaomi.Model.entity.UeserEntity;
import com.example.xiaomi.Model.utils.BaseDB;
import com.example.xiaomi.Model.utils.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
public class UeserDao extends BaseDB {
    /* DAO方法主要是对该表stu的原子性操作（CRUD）
       1、selectAll():List               查询所有
       2、selectById(Integer id):实体类   根据主键查询一条记录
       3、doInsert(实体类):int            新增操作
       4、doUpdate(实体类):int            更新操作
       5、doDelete(Integer):int          删除操作
     * @author SMILE.Huang
     * @date 2022-05-25 10:07
     */
        /**
         * 查询所有的学生信息
         * @return  返回集合对象
         */
        public List<UeserEntity> selectAll(){
            String sql = "select * from is_ueser order by uid desc";
            return super.query(sql, new StuRowMapper() );
        }
        /**
         * 根据主键查询单条学生信息
         * @param sid   主键编号
         * @return  返回单条学生信息
         */
        public UeserEntity selectById(Integer sid){
            String sql ="select * from is_ueser where uid=?";
            List<UeserEntity> list = super.query(sql, new StuRowMapper(), sid);
            if(list!=null && list.size()>0){
                return list.get(0);
            }
            return null;
        }

        /**
         * 新增
         * @return      返回的新增的主键值
         */
        public Integer doInsert(int id, String name , String sex , String uhead , String upostbox , String uciher , int ustate){
            String sql="insert into is_ueser values(?,?,?,?,?,?,?)";
            return super.insert(sql,id,
                    name,
                    sex,
                    uhead,
                    upostbox,
                    uciher,
                    ustate);
        }

        /**
         * 修改学生信息
         * @param stu
         * @return  受影响的行数
         */
        public Integer doUpdate(UeserEntity stu){
            String sql="update is_ueser set uname=?,usex=?,uhead=?,upostbox=?,uciher=?,ustate=? where uid=?";
            return super.update(sql, stu.getUname(),
                    stu.getUsex(),
                    stu.getUhead(),
                    stu.getUpostbox(),
                    stu.getUciche(),
                    stu.getUstate(),
                    stu.getUid());
        }

        /**
         * 删除操作
         * @param
         * @return
         */
        public Integer doDelete(Integer uid){
            String sql ="delete from is_ueser where uid=?";
            return super.update(sql, uid);
        }

        //类中类，将数据库的一行记录转换成一个对象
        class StuRowMapper implements RowMapper<UeserEntity> {
            @Override
            public UeserEntity rowmap(ResultSet rs) throws SQLException {
                return new UeserEntity(rs.getInt("uid"),
                        rs.getString("uname"),
                        rs.getString("usex"),
                        rs.getString("uhead"),
                        rs.getString("upostbox"),
                        rs.getString("uciher"),
                        rs.getInt("ustate"));
            }
        }
}
